home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9410_2.lha / Haufenweise / Programme / PoolExtraTest.c < prev    next >
C/C++ Source or Header  |  1994-07-18  |  1KB  |  53 lines

  1. /*
  2.  * PoolTest 1.0 © D. Göhler (15.07.94)
  3.  *
  4.  * Übersetzen mit (für DICE oder SAS C):
  5.  * sc LINK PoolTest.c PoolSupport.c AllocSupport.c
  6.  * dcc PoolTest.c PoolSupport.c AllocSupport.c
  7.  */
  8.  
  9. #include <clib/dos_protos.h>
  10. #include <exec/memory.h>
  11. #include <stdlib.h>
  12. #include <stdio.h>
  13.  
  14. #define GROESSE  100000  // 'großes' Stück
  15. #define THRES     80000  // ab 80000 neues Stück
  16. #define ANZAHL        5  // Allozierungen pro Pool
  17.  
  18. void *CreatePool13(ULONG Flags,ULONG RegionSize, 
  19.                    ULONG NewSize);
  20. void DeletePool13(APTR MyPool);
  21. APTR AllocPooled13(void *MyPool,ULONG Size);
  22. void FreePooled13(void *MyPool, APTR memaddr);
  23.  
  24. APTR memblocks[ANZAHL];
  25.  
  26. int main(int argc, char *agrv[])
  27. {
  28.    APTR mypool;
  29.    register int i = 0;
  30.  
  31.    if (mypool = CreatePool13(MEMF_PUBLIC,GROESSE,
  32.                              THRES))
  33.    {
  34.       memblocks[0] = AllocPooled13(mypool,20);
  35.       memblocks[1] = AllocPooled13(mypool,20000);
  36.                          // das geht auch !!
  37.       memblocks[2] = AllocPooled13(mypool,120000); 
  38.                          // das ergibt letztlich 20
  39.       memblocks[3] = AllocPooled13(mypool,19); 
  40.                          // das ergibt letztlich 8
  41.       memblocks[4] = AllocPooled13(mypool,1);  
  42.  
  43.       /* diese 2 Zeilen sind unnütz, nur zur Demo */
  44.       for (i=0; memblocks[i]; i++)
  45.       {  printf("i hat den Wert %ld\n",i);
  46.          FreePooled13(mypool, memblocks[i]); }
  47.  
  48.       DeletePool13(mypool); // Pool freigeben
  49.    }
  50.    return 0L;
  51. }
  52.  
  53.